/**
 * 
 */
package com.demo2do.boyle.backend.service.customer;

import java.util.List;

import com.demo2do.boyle.common.entity.customer.wallet.Withdrawal;
import com.demo2do.boyle.common.entity.customer.wallet.WithdrawalStatus;
import com.demo2do.core.service.GenericService;
import com.demo2do.core.web.resolver.Page;

/**
 * @author Leo
 *
 */
public interface WithdrawalService extends GenericService<Withdrawal> {
	
	/**
	 * list all withdrawals by status
	 * 
	 * @param status
	 * @return all withdrawals
	 */
    public List<Withdrawal> list(WithdrawalStatus status);

	/**
	 * list all withdrawals by status
	 * 
	 * @param page
	 * @param status
	 * @return all withdrawals
	 */
    public List<Withdrawal> list(WithdrawalStatus status, Page page);
    
    /**
     * 
     * @param status
     * @return the withdrawal count
     */
    public int count(WithdrawalStatus status);
    
    /**
     * audit customer withdrawal
     * 
     * @param withdrawal
     */
    public void audit(Withdrawal withdrawal);
    
    /**
     * do transfer withdrawals
     * 
     * @param aduserRefund
     */
    public void batchTransfer(Integer[] ids);
    
    /**
     * batch export 
     * 
     * @param withdrawals
     */
    public void batchExport(WithdrawalStatus withdrawalStatus);
}
